2

安装好mongdb 配置用户访问权限后,在命令模式下发现show dbs 报错,懵逼了不是配置权限了么。下面是我的解决回放:

#进入mongo 命令模式发现拨错
r@iZwz947cvofre97sstzcmuZ ~]# mongo
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
> show dbs
2017-04-03T09:27:05.069+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13,
    "codeName" : "Unauthorized"
} 

似乎是没权限操作。

#use admin 添加用户
db.createUser({user:"test",pwd:"123456",roles:[{role:'readAnyDatabase',db:'admin'}]})
Successfully added user: {
    "user" : "test",
    "roles" : [
        {
            "role" : "readAnyDatabase",
            "db" : "admin"
        }
    ]
}

退出mongo 命令模式,重新进入 发现可以了,?

[r@iZwz947cvofre97sstzcmuZ ~]# mongo
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
> use admin
switched to db admin
> db.auth('test','123456')
1
> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB
角色具体说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner:数据库拥有者,包含readWrite、dbAdmin、userAdmin
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root:只在admin数据库中可用。超级账号,超级权限

circle
4.7k 声望61 粉丝

"It works on my machine" 在我机器上好好的!!!